using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.UIElements;

public class ChooseServerPanel : BasePanel
{
    public ScrollRect svLeft;
    public ScrollRect svRight;
    public TextMeshProUGUI textServer;

    //右侧显示的服务器按钮的集合
    private List<GameObject> itemListRight = new List<GameObject>();
    //服务器列表数据
    List<ServerInfo> infoList;
    //初始化
    public override void Init()
    {
        //获取到服务器列表的数据
        infoList = LoginManager.Instance.ServerData;
        //根据服务器数量，创建左侧列表的按钮
        int num = infoList.Count / 10;
        int yv = infoList.Count % 10;
        if (yv > 0)
        {
            num += 1;
        }
        for (int i = 0; i < num; i++)
        {
            GameObject item = Instantiate(Resources.Load<GameObject>("UI/ServerLeftItem"));
            //设置父对象
            item.transform.SetParent(svLeft.content, false);
            ServerLeftItem itemScrips = item.GetComponent<ServerLeftItem>();
            int beginId = i * 10 + 1;
            // int endId = (i + 1) * 10;
            //判断是否为最后一组
            // if (i + 1 > num)
            //     endId =  infoList.Count;
            //使用三元表达式表示整个逻辑
            int endId = i + 1 > num ? infoList.Count : i * 10 + 10;
            itemScrips.InitInfo(beginId, endId);
        }

    }
    public override void ShowMe()
    {
        base.ShowMe();
        //初始化上一次选择的服务器，更新当前选择
        int id = LoginManager.Instance.LoginData.serverId;
        //如果上一次没有选择任何服务器
        if (id <= 0)
        {
            //删除子对象中的对应对象
            Destroy(transform.Find("ServerTopItem").gameObject);
            Destroy(transform.Find("ImageLastTxt").gameObject);
            //更新当前选择的区间
            Updatepanel(1, 10);

        }
        //如果上一次选择过服务器
        else
        {
            ServerInfo lastChoose = LoginManager.Instance.ServerData[id - 1];
            GameObject serverTopItem = transform.Find("ServerTopItem").gameObject;
            ServerRightItem serverRightItem = serverTopItem.GetComponent<ServerRightItem>();
            //更新服务器的数据
            serverRightItem.InitInfo(lastChoose);
            //更新当前选择为上次选择的服务器的区间
            Updatepanel(lastChoose.id < 10 ? 1 : lastChoose.id / 10 * 10 + 1, (lastChoose.id / 10 + 1) * 10);


        }
    }
    /// <summary>
    /// 更新当前选择区间
    /// </summary>
    /// <param name="beginId"></param>
    /// <param name="endId"></param>
    public void Updatepanel(int beginId, int endId)
    {
        //更新服务器区间显示
        textServer.text = "服务器" + beginId + "—" + endId;
        //删除之前的按钮
        for (int i = 0; i < itemListRight.Count; i++)
        {
            Destroy(itemListRight[i]);
        }
        //清空列表
        itemListRight.Clear();
        //创建新的按钮
        for (int i = beginId; i <= endId; i++)
        {

            //获取第i个服务器信息
            ServerInfo serverInfo = LoginManager.Instance.ServerData[i - 1];
            //创建对应服务器按钮
            GameObject RightItem = Instantiate(Resources.Load<GameObject>("UI/ServerRightItem"));
            //设置父对象
            RightItem.transform.SetParent(svRight.content, false);
            //更新按钮信息
            ServerRightItem rightItemScript = RightItem.GetComponent<ServerRightItem>();
            rightItemScript.InitInfo(serverInfo);
            //创建的对象添加到列表中
            itemListRight.Add(RightItem);
        }
    }
}
